package 基础语法;

public class Switch {
    public static void main(String[] args) {
        char[] a = { 'b', 125, 'a', 'c', 'd', 'e', 'f', 'g' };
        for (int i = 0; i < a.length; i++) {
            System.out.println("Switch:" + a[i] + ",输出：");

            switch (a[i]) {// byte,short,int,char,jdk5以后可以是枚举，jdk7以后可以是String
                case 'b': {// 不允许重复，只能是字面量，不能是变量
                    System.out.println("b");
                }
                    break;
                case 125:{
                    System.out.println(125);
                    break;}
                case 'a': {
                    System.out.println("a");
                }
                    break;// 结束switch语句
                case 'c': {
                    System.out.println("c");
                }
                // 无break;case穿透，语句体没有写break
                /*
                 * 执行流程:
                 * 首先还是会拿着小括号中表达式的值跟下面每一个case进行匹配
                 * 如果匹配上，就会执行对应的语句体，如果此时发现了break，那么结束整个switch语句
                 * 如果没有发现break，那么程序回继续执行下一个case的语句体，一直遇到break或者右大括号为止
                 * 使用场景：
                 * 如果多个case的语句体重复了，可以考虑利用case穿透简化代码
                 */
                case 'd': {
                    System.out.println("d");
                }
                    break;
                case 'k','h','g': {
                    System.out.println("e");
                }
                case 'e': {
                    System.out.println("e");
                }
                case 'f': {
                    System.out.println("f");
                }
                default: {
                    System.out.println("我可以不写，可以写在任意位置,在无匹配或，连续的case匹配上且均为写break时执行");
                }
                    break;

            }
            System.out.println();
        }

       switch('b'){
            case 'b'->{System.out.println("JDK12特性");}
            case 'c'->{System.out.println("JDK12特性");}
            case 'a'->System.out.println("JDK12特性");
            
            default->System.out.println("default");

        }
    }


}
